#Boa:Frame:ConsultaFinanzas

import wx
import utiles
import consultasBD
from decimal import Decimal

def create(parent):
    return ConsultaFinanzas(parent)

[wxID_CONSULTAFINANZAS, wxID_CONSULTAFINANZASBUTTON1, 
 wxID_CONSULTAFINANZASBUTTON2, wxID_CONSULTAFINANZASBUTTON3, 
 wxID_CONSULTAFINANZASDATEPICKERCTRL1, wxID_CONSULTAFINANZASDATEPICKERCTRL2, 
 wxID_CONSULTAFINANZASPANEL1, wxID_CONSULTAFINANZASSTATICTEXT1, 
 wxID_CONSULTAFINANZASSTATICTEXT10, wxID_CONSULTAFINANZASSTATICTEXT11, 
 wxID_CONSULTAFINANZASSTATICTEXT12, wxID_CONSULTAFINANZASSTATICTEXT2, 
 wxID_CONSULTAFINANZASSTATICTEXT3, wxID_CONSULTAFINANZASSTATICTEXT4, 
 wxID_CONSULTAFINANZASSTATICTEXT5, wxID_CONSULTAFINANZASSTATICTEXT6, 
 wxID_CONSULTAFINANZASSTATICTEXT7, wxID_CONSULTAFINANZASSTATICTEXT8, 
 wxID_CONSULTAFINANZASSTATICTEXT9, wxID_CONSULTAFINANZASTEXTCTRL1, 
 wxID_CONSULTAFINANZASTEXTCTRL2, wxID_CONSULTAFINANZASTEXTCTRL3, 
 wxID_CONSULTAFINANZASTEXTCTRL4, wxID_CONSULTAFINANZASTEXTCTRL5, 
 wxID_CONSULTAFINANZASTEXTCTRL6, wxID_CONSULTAFINANZASTEXTCTRL7, 
] = [wx.NewId() for _init_ctrls in range(26)]

class ConsultaFinanzas(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_CONSULTAFINANZAS,
              name='ConsultaFinanzas', parent=prnt, pos=wx.Point(384, 143),
              size=wx.Size(291, 314), style=wx.DEFAULT_FRAME_STYLE,
              title='Consultas Finanzas')
        self.SetClientSize(wx.Size(283, 287))

        self.panel1 = wx.Panel(id=wxID_CONSULTAFINANZASPANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(283, 287),
              style=wx.TAB_TRAVERSAL)

        self.staticText1 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT1,
              label='Fecha desde', name='staticText1', parent=self.panel1,
              pos=wx.Point(16, 8), size=wx.Size(61, 13), style=0)

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_CONSULTAFINANZASDATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self.panel1, pos=wx.Point(16, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.staticText2 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT2,
              label='Fecha hasta', name='staticText2', parent=self.panel1,
              pos=wx.Point(104, 8), size=wx.Size(59, 13), style=0)

        self.datePickerCtrl2 = wx.DatePickerCtrl(id=wxID_CONSULTAFINANZASDATEPICKERCTRL2,
              name='datePickerCtrl2', parent=self.panel1, pos=wx.Point(104, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.button1 = wx.Button(id=wxID_CONSULTAFINANZASBUTTON1,
              label='Procesar', name='button1', parent=self.panel1,
              pos=wx.Point(192, 24), size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnProcesar,
              id=wxID_CONSULTAFINANZASBUTTON1)

        self.button3 = wx.Button(id=wxID_CONSULTAFINANZASBUTTON3,
              label='Limpiar', name='button3', parent=self.panel1,
              pos=wx.Point(192, 216), size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar,
              id=wxID_CONSULTAFINANZASBUTTON3)

        self.button2 = wx.Button(id=wxID_CONSULTAFINANZASBUTTON2, label='Salir',
              name='button2', parent=self.panel1, pos=wx.Point(192, 256),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnSalir,
              id=wxID_CONSULTAFINANZASBUTTON2)

        self.staticText3 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT3,
              label='Total Recargos aprobados', name='staticText3',
              parent=self.panel1, pos=wx.Point(16, 200), size=wx.Size(126, 13),
              style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_CONSULTAFINANZASTEXTCTRL1,
              name='textCtrl1', parent=self.panel1, pos=wx.Point(64, 216),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl1.SetEditable(False)

        self.staticText4 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT4,
              label='Total Costos Financieros', name='staticText4',
              parent=self.panel1, pos=wx.Point(16, 56), size=wx.Size(117, 13),
              style=0)

        self.textCtrl2 = wx.TextCtrl(id=wxID_CONSULTAFINANZASTEXTCTRL2,
              name='textCtrl2', parent=self.panel1, pos=wx.Point(64, 72),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl2.SetEditable(False)

        self.staticText5 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT5,
              label='desde el', name='staticText5', parent=self.panel1,
              pos=wx.Point(137, 56), size=wx.Size(40, 16), style=0)
        self.staticText5.Show(False)

        self.staticText6 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT6,
              label='22-03-2012', name='staticText6', parent=self.panel1,
              pos=wx.Point(181, 56), size=wx.Size(56, 13), style=0)
        self.staticText6.Show(False)

        self.staticText7 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT7,
              label='Central', name='staticText7', parent=self.panel1,
              pos=wx.Point(16, 72), size=wx.Size(35, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT8,
              label='Parana', name='staticText8', parent=self.panel1,
              pos=wx.Point(16, 96), size=wx.Size(34, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT9,
              label='Saska', name='staticText9', parent=self.panel1,
              pos=wx.Point(16, 120), size=wx.Size(28, 13), style=0)

        self.staticText10 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT10,
              label='Peatonal', name='staticText10', parent=self.panel1,
              pos=wx.Point(16, 144), size=wx.Size(42, 13), style=0)

        self.textCtrl3 = wx.TextCtrl(id=wxID_CONSULTAFINANZASTEXTCTRL3,
              name='textCtrl3', parent=self.panel1, pos=wx.Point(64, 96),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl3.SetEditable(False)

        self.textCtrl4 = wx.TextCtrl(id=wxID_CONSULTAFINANZASTEXTCTRL4,
              name='textCtrl4', parent=self.panel1, pos=wx.Point(64, 120),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl4.SetEditable(False)

        self.textCtrl5 = wx.TextCtrl(id=wxID_CONSULTAFINANZASTEXTCTRL5,
              name='textCtrl5', parent=self.panel1, pos=wx.Point(64, 144),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl5.SetEditable(False)

        self.textCtrl6 = wx.TextCtrl(id=wxID_CONSULTAFINANZASTEXTCTRL6,
              name='textCtrl6', parent=self.panel1, pos=wx.Point(64, 176),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl6.SetEditable(False)

        self.staticText11 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT11,
              label='TOTAL', name='staticText11', parent=self.panel1,
              pos=wx.Point(16, 176), size=wx.Size(32, 13), style=0)

        self.staticText12 = wx.StaticText(id=wxID_CONSULTAFINANZASSTATICTEXT12,
              label='Total Descuentos aprobados', name='staticText12',
              parent=self.panel1, pos=wx.Point(16, 240), size=wx.Size(137, 13),
              style=0)

        self.textCtrl7 = wx.TextCtrl(id=wxID_CONSULTAFINANZASTEXTCTRL7,
              name='textCtrl7', parent=self.panel1, pos=wx.Point(64, 256),
              size=wx.Size(72, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.fechaInicioCosto = ""
        self.fechaFinCosto = ""
        self.fechaInicioRecargo = ""
        self.fechaFinRecargo = ""
        self.inicializar()

    def inicializar(self):
        primerDia = utiles.getDaysExtreme()[0]
        ultimoDia = utiles.getDaysExtreme()[1]
        utiles.cargar_fecha(primerDia, self.datePickerCtrl1)
        utiles.cargar_fecha(ultimoDia, self.datePickerCtrl2)
        self.textCtrl1.SetLabel("0.00")
        self.textCtrl2.SetLabel("0.00")
        self.textCtrl3.SetLabel("0.00")
        self.textCtrl4.SetLabel("0.00")
        self.textCtrl5.SetLabel("0.00")
        self.textCtrl6.SetLabel("0.00")
        self.staticText5.Show(False)
        self.staticText6.Show(False)
        self.datePickerCtrl1.SetFocus()

    def verificar(self):
        fecha = self.datePickerCtrl1.GetLabel()
        fecha = fecha.replace("/","-")
        fechaInicio = utiles.invertirFecha(fecha)
        fecha = self.datePickerCtrl2.GetLabel()
        fecha = fecha.replace("/","-")
        fechaFin = utiles.invertirFecha(fecha)
        if fechaFin < fechaInicio:
            utiles.mensaje(None,"No puede ser anterior la fecha\nde Fin a la de Inicio")
            return False
        self.fechaInicioCosto = fechaInicio+" 00:00:00"
        self.fechaInicioRecargo = fechaInicio+" 00:00:00"
        self.fechaFinCosto = fechaFin+" 23:59:59"
        self.fechaFinRecargo = fechaFin+" 23:59:59"
        if fechaInicio <= "2012-03-22":
            texto = "Tenga en cuenta que no existen Costos Financieros\n"
            texto+= "anteriores a la fecha 22-03-2012."
            utiles.mensaje(None,texto)
            self.staticText5.Show(True)
            self.staticText6.Show(True)
            self.fechaInicioCosto = "2012-03-22 00:00:00"
        return True

    def OnSalir(self, event):
        self.Close()
        
    def OnLimpiar(self, event):
        self.inicializar()

    def OnProcesar(self, event):
        #consulta Recargos
        if not self.verificar():
            return
        r1 = "SELECT SUM(valor) FROM vtas_ctasctes_ajustes WHERE fechaoperacion \n"
        r2 = "BETWEEN '%s' AND '%s' \n" % (self.fechaInicioRecargo,self.fechaFinRecargo)
        r3 = "AND aprobado='1' AND tipooperacion='RECA' "
        sql = r1+r2+r3
        print sql
        reporte = consultasBD.ordenCruda(sql)
        try:
            total = Decimal(reporte[0][0]).quantize(Decimal("0.10"))
        except:
            total = Decimal("0.00")
        self.textCtrl1.SetLabel(str(total))

        r1 = "SELECT SUM(valor) FROM vtas_ctasctes_ajustes WHERE fechaoperacion \n"
        r2 = "BETWEEN '%s' AND '%s' \n" % (self.fechaInicioRecargo,self.fechaFinRecargo)
        r3 = "AND aprobado='1' AND tipooperacion='DESC' "
        sql = r1+r2+r3
        print sql
        reporte = consultasBD.ordenCruda(sql)
        try:
            total = Decimal(reporte[0][0]).quantize(Decimal("0.10"))
        except:
            total = Decimal("0.00")
        self.textCtrl7.SetLabel(str(total))

        sql = "SELECT idsucursal FROM sucursales"
        reporte = consultasBD.ordenCruda(sql)

        costoFinanciero = {}
        for indice in xrange(len(reporte)):
            r1 = "SELECT SUM(cc.montocuota) FROM ventas v, vtas_ctasctes cc \n"
            r2 = "WHERE v.nrofactura = cc.nrofactura \n"
            r3 = "AND v.fecha BETWEEN '"+self.fechaInicioCosto+"' AND '"+self.fechaFinCosto+"' \n"
            r4 = "AND cc.idformapagos LIKE '%cc%' "
            sql = r1+r2+r3+r4
            reporte,conecta = consultasBD.ordenCrudaRemota(sql,indice)
            if not conecta:
                print "-> No conecta con la sucursal"
                continue
            try:
                total = Decimal(str(reporte[0][0]))
            except:
                total = Decimal("0.00")
            aux = total/Decimal("1.10")
            aux = total - aux
            aux = aux.quantize(Decimal("0.10"))
            costoFinanciero[indice+1]=aux
            if indice==0:
                self.textCtrl2.SetLabel(str(costoFinanciero[1]))
            elif indice==1:
                self.textCtrl3.SetLabel(str(costoFinanciero[2]))
            elif indice==2:
                self.textCtrl4.SetLabel(str(costoFinanciero[3]))
            else:
                self.textCtrl5.SetLabel(str(costoFinanciero[4]))

        total = Decimal("0.00")
        for item in costoFinanciero:
            total+= costoFinanciero[item]
        total = total.quantize(Decimal("0.10"))

        self.textCtrl2.SetLabel(str(costoFinanciero[1]))
        self.textCtrl3.SetLabel(str(costoFinanciero[2]))
        self.textCtrl4.SetLabel(str(costoFinanciero[3]))
        self.textCtrl5.SetLabel(str(costoFinanciero[4]))
        self.textCtrl6.SetLabel(str(total))
